package com.bicon.botu.mall.base.service;


import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.bicon.botu.mall.base.dto.ChannelDto;
import com.bicon.botu.mall.base.dto.ChannelGoodsDto;
import com.bicon.botu.core.base.common.entity.BaseResult;
import com.bicon.botu.mall.base.entity.ChannelGoods;

import java.util.List;

/**
 * 频道商品 服务类
 *
 * @author 张凡
 * @date 2017/7/19 下午 14:49
 */
public interface IChannelGoodsService extends IService<ChannelGoods> {

    /**
     * 添加频道商品
     *
     * @param goodsId     商品id
     * @param channelType 频道类型： 1-猜你喜欢 2-新品首发 3-人气推荐
     * @return
     */
    BaseResult add(String goodsId, Integer channelType);

    /**
     * 批量修改频道商品排序
     *
     * @param goodsIdJson 商品id集合
     * @param channelType 频道类型：1-猜你喜欢 2-新品首发 3-人气推荐
     * @return
     */
    BaseResult updateSort(String goodsIdJson, Integer channelType);

    /**
     * 删除频道商品
     *
     * @param goodsId     商品id
     * @param channelType 频道类型：1-猜你喜欢 2-新品首发 3-人气推荐
     * @return
     */
    BaseResult delete(String goodsId, Integer channelType);

    /**
     * 获取频道商品并一次返回(客户端)
     *
     * @return
     */
    List<ChannelDto> getAllChannelGoods();

    /**
     * 获取频道和频道商品（客户端）
     *
     * @return
     */
    ChannelDto getAppChannelGoods(Integer channelType);

    /**
     * 查询频道和频道商品（后台）
     *
     * @param channelType
     * @return
     */
    ChannelDto getChannelGoods(Integer channelType);

    /**
     * 修改频道商品
     *
     * @param id          主键id
     * @param goodsId     商品id
     * @param channelType 频道类型：0-为你精选 1-猜你喜欢 2-新品首发 3-人气推荐
     * @return
     */
    BaseResult update(Integer id, String goodsId, Integer channelType);

    /**
     * 查询浏览最多的商品
     *
     * @return
     */
    List<ChannelGoodsDto> getMostBrowseGoods(Integer num);

    /**
     * 修改商品展示状态
     *
     * @param productId
     */
    void updateProductState(String productId, String state);

    /**
     * 分页获取猜你喜欢商品
     *
     * @param pageNo   页码
     * @param pageSize 每页显示条数
     * @param userId   用户id
     * @return
     */
    Page<ChannelGoodsDto> getGuessChannelGoods(Integer pageNo, Integer pageSize, String userId);

    /**
     * 获取App大首页精选商品频道的3个商品
     */
    List<ChannelGoodsDto> getAppHomePageChannelGoods();

}
